This invention relates in general to the field of computer queue systems, and more particularly to an improved system and method for distributing output queue space.
In computer systems, commands such as reads and writes are queued for processing until space is available in an output queue to return the results of the command. Once space becomes available in the output queue, the command is typically released and processed where it returns data or other information into the output queue.
Conventional systems typically have a single input queue through which all commands are processed for a given output queue. However, newer computer system designs may include additional commands in a separate input queue for processing as space permits in the given output queue. Conventional memory systems do not provide for multiple input queues to provide commands for processing and to provide output to a single output queue. Therefore, it is desirable to provide a system for distributing output queue space between multiple command input queues.
From the foregoing, it may be appreciated that a need has arisen for a system and method for distributing output queue space that provides support for multiple command input queues. In accordance with the present invention, a system and method for distributing output queue space are provided that substantially eliminate and reduce disadvantages and problems associated with conventional output queue space distribution systems.
According to an embodiment of the present invention, a system for distributing output queue space is provided that includes an output queue, an input queue, an asynchronous input queue, and a credit allocation module.
The output queue has a certain number of output spaces where each output space represents an output queue credit for the output queue. The output queue is operable to release output queue credits when releasing data from output spaces in the output queue and to receive data in response to a command being processed from the input queue. The input queue is operable to queue commands and to request a number of output queue credits in response to receiving a command in the input queue. The input queue is further operable to release the queued commands for processing in response to receiving the requested number of output queue credits. The asynchronous input queue is operable to queue commands and to request a number of output queue credits in response to receiving a command in the asynchronous input queue. The asynchronous input queue is further operable to release the queued commands for processing in response to receiving the requested number of output queue credits. The credit allocation module is operable to receive the released output queue credits and to disburse the output queue credits in response to requests for output queue credits from the input queue and the asynchronous input queue.
The present invention provides various technical advantages over conventional output queue space distribution systems. For example, one technical advantage is that multiple command input queues may provide commands for processing and for providing output to a single output queue. Another technical advantage is that an arbitrator coupled to one of the input queues can perform its arbitration duties without knowing a status of other input queues. Other technical advantages may be readily apparent to one skilled in the art from the following figures, description and claims.